/*
题目: 最小操作次数使数组元素相等 II
给你一个长度为 n 的整数数组 nums ，返回使所有数组元素相等需要的最小操作数。

在一次操作中，你可以使数组中的一个元素加 1 或者减 1 。

https://leetcode.cn/problems/minimum-moves-to-equal-array-elements-ii/
 */
public class MinMoves2 {
    public int minMoves2(int[] nums) {
        // 贪心: 中位数贪心
        // 将所有元素都变成中位数就是最小操作数
        Arrays.sort(nums);
        int src = 0;
        int mid = nums[nums.length >> 1];
        for (int x : nums) {
            src += Math.abs(mid - x);
        }

        return src;
    }
}
